const express = require('express');
const bodyParser = require('body-parser');
const DB = require('../../modules/db.js');
const multiparty = require('multiparty') //图片上传模块  既可以获取form表单数据，也可以实现上传图片
const fs = require('fs');
const path = require('path')

let router = express.Router()   //可使用express.Router 类创建模块化，可挂载的路由句柄


router.use(bodyParser.urlencoded({
    extended: false
}));
router.use(bodyParser.json());

//列表
router.get('/', function (req, res) {
    DB.find('product', {}, function (error, data) {
        if (error) {
            console.log(error)
        } else {
            res.render('admin/product/product', {
                list: data
            })
        }
    })
})

//增加商品
router.get('/productadd', function (req, res) {
    res.render('admin/product/productadd')
})

//添加商品
router.post('/doProductAdd', function (req, res) {
    //获取表单的数据以及post过来的图片
    let form = new multiparty.Form();
    form.uploadDir = 'upload'; //上传图片保存的地址        目录必须存在
    form.parse(req, function (err, fields, files) {
        console.log(fields) //获取表单的数据
        console.log(files) //图片上传成功返回的信息

        let title = fields.title[0];
        let price = fields.price[0];
        let fee = fields.fee[0];
        let description = fields.description[0];
        let pic = files.pic[0].path;

        DB.insert('product', {
            title,
            price,
            fee,
            description,
            pic
        }, function (error, data) {
            if (error) {
                console.log(error)
            } else {
                res.redirect('/admin/product')
            }
        })

    })

})

//编辑商品
router.get('/productedit', function (req, res) {
    let id = req.query.id;
    //去数据库查询这个id对应的数据      自增长的id要用  '_id': new DB.ObjectID(id)
    DB.find('product', {
        '_id': new DB.ObjectID(id)
    }, function (error, data) {
        if (error) {
            console.log(error)
        } else {
            console.log(data)
            res.render('admin/product/productedit', {
                list: data[0]
            })
        }
    })

})

//编辑商品
router.post('/doProductEdit', function (req, res) {
    //获取表单的数据以及post过来的图片
    let form = new multiparty.Form();
    form.uploadDir = 'upload'; //上传图片保存的地址        目录必须存在
    form.parse(req, function (err, fields, files) {
        console.log(fields) //获取表单的数据
        console.log(files) //图片上传成功返回的信息

        let _id = fields._id[0];
        let title = fields.title[0];
        let price = fields.price[0];
        let fee = fields.fee[0];
        let description = fields.description[0];
        let originalFilename = files.pic[0].originalFilename;
        let pic = files.pic[0].path;

        if (originalFilename) { //修改图片
            var setData = {
                title,
                price,
                fee,
                description,
                pic
            }
        } else { //没有修改图片
            var setData = {
                title,
                price,
                fee,
                description
            }
            //删除临时图片
            fs.unlink(path.join(__dirname, '/' + pic), function () {

            })
        }

        DB.update('product', {
            "_id": new DB.ObjectID(_id)
        }, setData, function (error, data) {
            if (error) {
                console.log(error)
            } else {
                res.redirect('/admin/product')
            }
        })
    })

})

//删除商品
router.get('/productdelete', function (req, res) {
    let id = req.query.id;
    DB.deleteOne('product', {
        '_id': new DB.ObjectID(id)
    }, function (error, data) {
        if (error) {
            console.log(error)
        } else {
            //console.log(data)
            res.redirect('/admin/product')
        }
    })
})
module.exports = router;